// Massgate
// Copyright (C) 2017 Ubisoft Entertainment
// 
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.
#ifndef MMG_SERVERPROTOCOL___H__
#define MMG_SERVERPROTOCOL___H__

class MMG_ServerProtocol
{
public:
	enum QuizFailedReasons
	{
		QUIZ_FAILED_WRONG_CDKEY, 
		QUIZ_FAILED_CDKEY_NOT_FOUND, 
		QUIZ_FAILED_YOU_ARE_NOT_RANKED_SERVER,
		QUIZ_FAILED_YOU_ARE_NOT_TOURNAMENT_SERVER,
		QUIZ_FAILED_YOU_ARE_NOT_CLANMATCH_SERVER
	}; 

	enum NetworkDelimiters { 
/*
		DELIMITER_SERVERPROTOCOL_AUTH_CLIENT_CONNECTION,
		DELIMITER_SERVERPROTOCOL_AUTH_DS_CONNECTION,
		DELIMITER_SERVERPROTOCOL_QUIZ_FROM_MASSGATE, 
		DELIMITER_SERVERPROTOCOL_QUIZ_ANSWERS_TO_MASSGATE, 
		DELIMITER_SERVERPROTOCOL_QUIZ_FAILED, 
		DELIMITER_SERVERPROTOCOL_PING,
		DELIMITER_SERVERPROTOCOL_PONG,
		DELIMITER_SERVERPROTOCOL_INFOREQUEST,
		DELIMITER_SERVERPROTOCOL_INFORESPONSE,
		DELIMITER_SERVERPROTOCOL_GAME_EXTENDED_INFO_REQUEST,
		DELIMITER_SERVERPROTOCOL_GAME_EXTENDED_INFO_RESPONSE,
		DELIMITER_SERVERPROTOCOL_PUBLIC_ID,
		DELIMITER_SERVERPROTOCOL_INTERNAL_AUTHTOKEN,
		DELIMITER_SERVERPROTOCOL_REPORT_PLAYER_STATS,

		DELIMITER_SERVERPROTOCOL_SERVER_START,
		DELIMITER_SERVERPROTOCOL_SERVER_STOP,
		DELIMITER_SERVERPROTOCOL_SERVER_STATUS,
		DELIMITER_SERVERPROTOCOL_GAME_START,
		DELIMITER_SERVERPROTOCOL_GAME_FINISHED,
		DELIMITER_SERVERPROTOCOL_USER_PING,
		DELIMITER_SERVERPROTOCOL_USER_LIST_SERVERS,
		DELIMITER_SERVERPROTOCOL_USER_GET_SERVER_BY_ID,
		DELIMITER_SERVERPROTOCOL_USER_GET_SERVERS_BY_NAME,
		DELIMITER_SERVERPROTOCOL_USER_JOIN,
		DELIMITER_SERVERPROTOCOL_USER_PART,
		DELIMITER_SERVERPROTOCOL_ACK,

		// Map Cycle stuff
		DELIMITER_SERVERPROTOCOL_SERVER_MAP_LIST,
		DELIMITER_SERVERPROTOCOL_USER_GET_CYCLE_MAP_LIST,

		DELIMITER_SERVERPROTOCOL_PLAYER_LADDER_GET_REQUEST,
		DELIMITER_SERVERPROTOCOL_FRIENDS_LADDER_GET_REQUEST,
		DELIMITER_SERVERPROTOCOL_CLAN_LADDER_GET_REQUEST,
		DELIMITER_SERVERPROTOCOL_CLAN_LADDER_TOPTEN_REQ,

		// Clan stuff
		DELIMITER_SERVERPROTOCOL_REPORT_CLAN_STATS,

		// Clan match stuff
		DELIMITER_SERVERPROTOCOL_SERVER_CLAN_MATCH_PRELOAD,
		DELIMITER_SERVERPROTOCOL_SERVER_CLAN_MATCH_INFO,

		// Tournament stuff
		DELIMITER_SERVERPROTOCOL_GET_SERVER_FOR_TOURNAMENT_MATCH,
		DELIMITER_SERVERPROTOCOL_SERVER_TOURNAMENT_INFO,			// Tell DS to start loading tournament map. Provides tournament info.
		DELIMITER_SERVERPROTOCOL_SERVER_TOURNAMENT_RESET,			// Tell DS to reset state.
		DELIMITER_SERVERPROTOCOL_SERVER_TOURNAMENT_PENDING,			// Tell DS that no match need to be played. 
		DELIMITER_SERVERPROTOCOL_SERVER_TOURNAMENT_LOAD_MAP_COMPLETE,//Tell TournamentHandler that tournament map loaded and waiting for players.
		DELIMITER_SERVERPROTOCOL_SERVER_TOURNAMENT_LOAD_MAP_FAILED,	// Tell TournamentHandler that tournament map failed to load. 
		DELIMITER_SERVERPROTOCOL_SERVER_TOURNAMENT_REPORT_STATS,	// Report game end stats to Massgate tournamenthandler

		// Medals and Badges 
		DELIMITER_SERVERPROTOCOL_PLAYER_STATS_REQ, 
		DELIMITER_SERVERPROTOCOL_PLAYER_MEDALS_REQ, 
		DELIMITER_SERVERPROTOCOL_PLAYER_BADGES_REQ, 
		DELIMITER_SERVERPROTOCOL_CLAN_STATS_REQ, 
		DELIMITER_SERVERPROTOCOL_CLAN_MEDALS_REQ, 

		DELIMITER_SERVERPROTOCOL_SANITY_PING,

		DELIMITER_SERVERPROTOCOL_LOG_CHAT,
		
		DELIMITER_SERVERPROTOCOL_KEEPALIVE
*/
	};
};

#endif
